import SCUMMCore.Nodes.NodeCollection;
import SCUMMCore.CommonFunctions;

class SCUMMCore.Nodes.Node{
	private var MainNode:MovieClip;
	private var blVisited:Boolean = false;
	private var arrAristas:Array;
	var parent:Node;
	var distancia:Number;
	var _x:Number;
	var _y:Number;
	function Node(param_MainNode:MovieClip){
		MainNode = param_MainNode;
		arrAristas =  new Array();
		_x=param_MainNode._x;
		_y=param_MainNode._y;
	}
	function getName():String{
		return MainNode._name;
	}
	function cleanVisited(){
		blVisited=false;
	}
	function setVisited(){
		blVisited=true;
	}
	function wasVisited():Boolean{
		return blVisited;
	}
	function getMainMovieClip():MovieClip{
		return MainNode;
	}

	function addChild(param_NodeToAdd:Number){
		arrAristas[arrAristas.length]=param_NodeToAdd;
	}
	/*
	Esta funcion tiene como devuelve true si el Nodo que se
	pasa como parametro es vecino del nodo
	*/
	function hasNode(param_NodeToCheck:Number):Boolean{
		for(var i=0;i<=arrAristas.length;i++){
			if(arrAristas[i]==param_NodeToCheck) return true;
		}
		return false;
	}
	/*
	compara el nodo con otro que se le pasa como parametro y devuelve true
	si se trata del mismo nodo.
	*/
	function isNode(param_NodeToCheck:Node):Boolean{
		if(this.getMainMovieClip()._name == param_NodeToCheck.getMainMovieClip()._name){
				return true;
			}else{
				return false;
		}
	}
	function getRelatedNodes():Array{
		return arrAristas;
	}
	function drawPaths(){
		var myNode:MovieClip;
		for(var i=0;i<getRelatedNodes().length;i++){
			myNode = eval("_root.myNodo_"+getRelatedNodes()[i]);
			CommonFunctions.drawConstrain(getMainMovieClip(), myNode);
		}		
	}
}